/**
 * 
 */
package io.dora.base;

import io.dora.conf.ProviderConfig;
import io.dora.remoting.ConsumerClient;

import java.util.Map;

/**
 * 协议接口
 * 
 * @author zhaohongbo
 *
 */
public interface Protocol {
	
	/**
	 * 获取服务端口
	 * 
	 * @return
	 */
	int getServicePort();
	
	/**
	 * 对外暴露服务
	 * 
	 * @param <T>
	 * @param serviceProvider
	 */
	<T> void export(ProviderConfig<T> serviceProvider);
	
	/**
	 * 协议关闭
	 */
	void shutdown();

	/**
	 * 获取consumer
	 * 
	 * @return
	 */
	Map<String, ConsumerClient> getConsumerClientMap();
}
